草庐IT

Rust 并发编程

全部标签

java - 具有弱键的并发映射

我有一个高度并发的应用程序,它使用文件系统上的资源。两个线程同时访问同一资源的可能性很小,但如果发生这种情况,应用程序可能会显示有线行为。每个资源都可以通过String坐标vector进行映射(绑定(bind)在ResourceIdentifier类中)。在我当前的解决方案中,我创建了此类资源标识符的ConcurrentMap以收集线程在访问资源时使用的监视器:(ResourceIdentifier覆盖equals和hashCode正确。)ConcurrentMapconcurrentMap=newConcurrentHashMap();publicObjectaquireMonito

c# - 如何以编程方式确定我的处理器类型?

如何以编程方式确定我的机器是x86、x64还是IA64? 最佳答案 在Windows系统上,您可以获得环境变量PROCESSOR_ARCHITECTURE。这是一篇MSDN文章,解释了可以返回的值。PROCESSOR_ARCHITECTURE=AMD64PROCESSOR_ARCHITECTURE=IA64PROCESSOR_ARCHITECTURE=x86 关于c#-如何以编程方式确定我的处理器类型?,我们在StackOverflow上找到一个类似的问题:

Java 并发 : lock effiency

我的程序有100个线程。每个线程都这样做:1)如果arrayList为空,则向其添加具有特定属性的元素2)如果arrayList不为空,遍历arrayList中找到的元素,如果找到合适的元素(匹配某些属性),获取并移除arrayList这里的问题是,当一个线程遍历arrayList时,其他99个线程正在等待arrayList上的锁。如果我希望所有100个线程都在无锁条件下工作,您会给我什么建议?所以他们都有工作要做?谢谢 最佳答案 你看过sharedvsexclusive了吗?锁定?您可以在列表上使用共享锁,然后在列表元素上使用“已

java - 为我的非智能手机开始编程的最佳方式是什么?

我有一部普通的老式手机,它没有特殊的应用程序系统,并且使用Java(我假设是ME)用于您可以在其上使用的少数应用程序。这仍然是一个不错的用户群,我想开始为这种类型的手机编程。我已经知道基本的Java理论和语法,所以..我从哪里开始为非智能手机编程? 最佳答案 JavaMEIMO的最佳编程环境是带有EclipseME的Eclipse。包括许多有关打包您的midlet等的内置内容。SonyEricsson无线工具包非常适合基于PC的测试和调试,但不要忘记在设备上进行测试!如果您对JavaME的生命周期了解不多,请尽可能广泛地阅读,并尝试

java - JMS/HornetQ = 如何从客户端以编程方式创建 JMS 队列?

我知道可以通过hornetq-jmx.xml配置文件在HornetQ中创建JMS队列。但我想从客户端执行此操作?我试过:HornetQJMSClient.createQueue(queueName);但这似乎没有创建队列(在hornetq服务器上)?当我尝试为此队列创建消费者时,我总是会收到一个队列未知的异常。如果能提供有关如何从客户端创建JMS队列的建议,我将不胜感激。(我根本不想在客户端或服务器上使用JNDI,如果可能的话)。更新:我不介意使用任何HornetQs核心API(与JMSAPI相对)从客户端创建队列。我的问题是:是否有任何方法可以从客户端创建队列(使用JMSApis或使

java - 从 ant 构建文件中以编程方式检索某些任务

我有一个导入其他antxml文件的build.xml。我想从中获取所有javac任务,这样我就可以看到为这些任务设置了什么类路径(javac用于多个目标)。我想出了以下代码(简化了一点):publicstaticvoidmain(String[]args)throwsException{Projectproject=newProject();project.init();Stringbuild="build.xml";FilebuildFile=newFile(build);ProjectHelper.configureProject(project,buildFile);Hashta

java - 在 Servlet 3.0 中以编程方式访问 MultiPartConfig

我使用Servlet3@MultiPartConfig注释在我的应用程序中实现文件上传。我需要在运行时设置multipart-config位置参数(不是在注释参数中硬编码)。是否有任何API可用于以编程方式访问servlet的multipart-config?谢谢 最佳答案 @MultiPartConfig实际上只是容器的标记接口(interface)。当servlet被初始化时,提供的注解值通过代理对象映射到它。当传入请求是multipart/form-data时,上传的部分被映射到请求,容器根据注释的值和请求的部分执行必要的工作

java - 并发还是顺序?

我正在研究Java中的线程。我在网站上找到的以下示例:publicclassThreadTest{publicstaticvoidmain(Stringargs[]){Threadt1=newThread(newThread1());t1.start();Threadt2=newThread(newThread2());t2.start();}}publicclassThread1implementsRunnable{@Overridepublicvoidrun(){for(inti=0;i预期的结果是这样的:MonNov1120:06:12CET20130123456789MonNo

java - 以编程方式将 Bean 注入(inject) CDI 上下文?

是否可以手动将bean注入(inject)到CDI上下文中?使用JBossSeam框架,我总是可以执行类似Contexts.getConversationContext().set("foo",bar);这样的操作,Bean将成为该上下文的一部分。是否可以在JavaEE6CDI中执行类似的操作? 最佳答案 使用CDI,您必须稍微改变您对作用域bean的看法。在Seam2中,上下文只是保存在特定范围内的map,您可以访问这些map。在CDI中,容器获得了对上下文的控制权,并且只允许您在具体范围内声明bean,并且所有内容都在后台进行管

java - 如何在并发线程中操作 "ConcurrentModificationException"和 `values()` 时避免 HashMap `put()`?

代码:我有一个哈希表privateMapmap=newHashMap();一种方法通过调用put(K,V)将K-V对放入其中。另一种方法想要从它的值中提取一组随机元素:intsize=map.size();//size>0V[]value_array=map.values().toArray(newV[size]);Randomrand=newRandom();intstart=rand.nextInt(size);intend=rand.nextInt(size);//returnvalue_array[start..end-1]这两个方法在两个不同的并发线程中被调用。错误:我遇到了